/**
* Copyright (c) By zengqh.
*
* This program is just for fun or demo, in the hope that it  
* will be useful, you can redistribute it and/or modify freely.
*
* Time: 2013/02/18
* File: vector3.cpp
**/

#include "enn_vector3.h"

namespace enn
{

template <> const Vector3<float> Vector3<float>::ZERO(0.0f, 0.0f, 0.0f);
template <> const Vector3<float> Vector3<float>::LEFT(-1.0f, 0.0f, 0.0f);
template <> const Vector3<float> Vector3<float>::RIGHT(1.0f, 0.0f, 0.0f);
template <> const Vector3<float> Vector3<float>::UP(0.0f, 1.0f, 0.0f);
template <> const Vector3<float> Vector3<float>::DOWN(0.0f, -1.0f, 0.0f);
template <> const Vector3<float> Vector3<float>::FORWARD(0.0f, 0.0f, -1.0f);
template <> const Vector3<float> Vector3<float>::BACK(0.0f, 0.0f, 1.0f);
template <> const Vector3<float> Vector3<float>::ONE(1.0f, 1.0f, 1.0f);

template <> const Vector3<double> Vector3<double>::ZERO(0.0f, 0.0f, 0.0f);
template <> const Vector3<double> Vector3<double>::LEFT(-1.0f, 0.0f, 0.0f);
template <> const Vector3<double> Vector3<double>::RIGHT(1.0f, 0.0f, 0.0f);
template <> const Vector3<double> Vector3<double>::UP(0.0f, 1.0f, 0.0f);
template <> const Vector3<double> Vector3<double>::DOWN(0.0f, -1.0f, 0.0f);
template <> const Vector3<double> Vector3<double>::FORWARD(0.0f, 0.0f, -1.0f);
template <> const Vector3<double> Vector3<double>::BACK(0.0f, 0.0f, 1.0f);
template <> const Vector3<double> Vector3<double>::ONE(1.0f, 1.0f, 1.0f);

template <> const Vector3<int> Vector3<int>::ZERO(0, 0, 0);
template <> const Vector3<int> Vector3<int>::LEFT(-1, 0, 0);
template <> const Vector3<int> Vector3<int>::RIGHT(1, 0, 0);
template <> const Vector3<int> Vector3<int>::UP(0, 1, 0);
template <> const Vector3<int> Vector3<int>::DOWN(0, -1, 0);
template <> const Vector3<int> Vector3<int>::FORWARD(0, 0, -1);
template <> const Vector3<int> Vector3<int>::BACK(0, 0, 1);
template <> const Vector3<int> Vector3<int>::ONE(1, 1, 1);

/** just for compile, do not use it */
template <> const Vector3<unsigned int> Vector3<unsigned int>::ZERO(0, 0, 0);
template <> const Vector3<unsigned int> Vector3<unsigned int>::LEFT(-1, 0, 0);
template <> const Vector3<unsigned int> Vector3<unsigned int>::RIGHT(1, 0, 0);
template <> const Vector3<unsigned int> Vector3<unsigned int>::UP(0, 1, 0);
template <> const Vector3<unsigned int> Vector3<unsigned int>::DOWN(0, -1, 0);
template <> const Vector3<unsigned int> Vector3<unsigned int>::FORWARD(0, 0, -1);
template <> const Vector3<unsigned int> Vector3<unsigned int>::BACK(0, 0, 1);
template <> const Vector3<unsigned int> Vector3<unsigned int>::ONE(1, 1, 1);
}